-- 该段代码用于定义并加载 LuaSnip 代码片段。首先，通过 pRequire 尝试加载 luasnip 模块，然后定义了两个代码片段，其中包含了一些文本节点、插入节点和选择节点。最后，将这些代码片段加入到 snippets 表中，并返回这个表以及空的 autosnippets 表。
-- 尝试加载 luasnip 模块
local ls = pRequire("luasnip")
-- 如果模块不存在，则不执行下面的代码
if not ls then
  return
end

-- [[定义快捷方式]]
-- 定义一个代码片段 (snippet)
local s = ls.s
-- 定义一个插入点 (insert node)
local i = ls.i
-- 定义一段文本 (text node)
local t = ls.t
local d = ls.dynamic_node
-- 定义一个选择点 (choice node)
local c = ls.choice_node
local f = ls.function_node
local sn = ls.snippet_node
-- 引入格式化功能
local fmt = require("luasnip.extras.fmt").fmt
-- 引入重复功能
local rep = require("luasnip.extras").rep

-- 初始化代码片段表
local snippets, autosnippets = {}, {}

-- 定义第一个代码片段
local myFirstSnippet = s(
  "myFirstSnippet",
  { t("Hi! That is my first snippet in Luasnip"), i(1, "placeholder"), t("Hi! That is my first snippet in Luasnip") }
)
-- 将第一个代码片段加入到代码片段表中
table.insert(snippets, myFirstSnippet)

-- 定义第二个代码片段
local mySecondSnippet = s(
  "mySecondSnippet",
  fmt(
    [[
  local {} = function({})
    {}
  end
  ]],
    { i(1, ""), c(2, { t("aaa"), t("myArg"), t("3333") }), i(3, "") }
  )
)
-- 将第二个代码片段加入到代码片段表中
table.insert(snippets, mySecondSnippet)

-- 返回定义的代码片段和自动代码片段表
return snippets, autosnippets
